/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package managers;

import conexionBD.ConexionServidor;
import java.io.Serializable;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.jsp.jstl.sql.Result;
import javax.servlet.jsp.jstl.sql.ResultSupport;

/**
 *
 * @author jose
 */
@ManagedBean
@SessionScoped
public class managerCrearObservacion implements Serializable {

    FacesContext context;
    private String  observacion;
    private Boolean vistoBueno;
    private Integer correlativo;
   

    ExternalContext extContext = FacesContext.getCurrentInstance().getExternalContext();
   
    /** Creates a new instance of managerCrearObservacion */
    public managerCrearObservacion() {
    }

    public Integer getCorrelativo() {
        return correlativo;
    }

    public void setCorrelativo(Integer correlativo) {
        this.correlativo = correlativo;
    }

    public String getObservacion() {
        return observacion;
    }

    public void setObservacion(String observacion) {
        this.observacion = observacion;
    }

    public Boolean getVistoBueno() {
        return vistoBueno;
    }

    public void setVistoBueno(Boolean vistoBueno) {
        this.vistoBueno = vistoBueno;
    }

      public String buscarObservacionParaModificar() {
        String destino = null;
        ConexionServidor miConexion = new ConexionServidor();
        try {
            Connection con = miConexion.getConnection();
            PreparedStatement ps = con.prepareStatement("select * from observacion where expediente = ?");
            ps.setString(1, managerModificarExpediente.numeroExpediente); //se le debe mandar el numero de expediente
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
               
            }
            rs.close();
            ps.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return destino;
    }

    public String guardarInformacionObservacion() {
        String destino = null;
        ConexionServidor myConexion = new ConexionServidor();
        try {
            Connection con = myConexion.getConnection();
            //Sentencia sql que hace el llamado a el procedimiento
            String sql = "{call observa(?,?,?,?)}";
            CallableStatement cs = con.prepareCall(sql);
            //Setting los parametros a ser captorados or el proceso almacenado
            cs.setString(1, managerModificarExpediente.numeroExpediente); //aca va el codigo de expediente
            cs.setString(2, extContext.getUserPrincipal().getName().toString()); // aca va el codigo o algo para saber que persona esta haciendo la observacion
            cs.setString(3, observacion);
            cs.setBoolean(4, vistoBueno);
            //ejecucion del proceso almacenado
            cs.execute();
            //Mensaje de actualizacion exitosa
            context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "ACTUALIZACI&Oacute;N", "La informacion fue actualizada con exito"));
            //cierre de CallableStatement y Connection
            cs.close();
            con.close();
            limpiar();

        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
        return destino;
    }

     public Result getListaObservacion() throws Exception {
        ConexionServidor miConexion = new ConexionServidor();
        Connection conn = miConexion.getConnection();
        try {
            PreparedStatement ps = conn.prepareStatement("SELECT observacion.observacion, idobservacion, usuario.nombreusuario FROM public.observacion, public.usuario WHERE observacion.idusuario = usuario.idusuario and idexpediente= ? order by  idobservacion ");
            ps.setString(1, managerModificarExpediente.numeroExpediente);
            ResultSet rs = ps.executeQuery();
            return ResultSupport.toResult(rs);
        } finally {
            conn.close();
        }
    }
     
 public void removerObserva() throws Exception {
        
        ConexionServidor miConexion = new ConexionServidor();
        Connection con = miConexion.getConnection();
        try{
            PreparedStatement ps = con.prepareStatement("delete from observacion where idexpediente = ? and idobservacion = ? ");
            ps.setString(1, managerModificarExpediente.numeroExpediente);
            ps.setInt(2, correlativo);
            ps.execute();
            correlativo=null;
            context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "ELIMINACI&Oacute;N", "La información fue eliminada con éxito"));
        } finally {
            con.close();
        }
    }

    public String limpiar() {
        observacion=null;
        vistoBueno=false;

        return null;
    }
}


